home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / a_utils / lgrammar / src / color.c next >
C/C++ Source or Header  |  1993-09-09  |  19KB  |  713 lines

  1. /*************************************************************************/
  2. /*
  3.  *
  4.  * Filename: color.c
  5.  *
  6.  */
  7.  
  8. #include "grammar.h"
  9.  
  10. #include <malloc.h>
  11. #include <stdio.h>
  12.  
  13. #include <X11/Intrinsic.h>
  14. #include <X11/StringDefs.h>
  15. #include <X11/Shell.h>
  16. #include <X11/Xaw/Box.h>
  17. #include <X11/Xaw/Cardinals.h>
  18. #include <X11/Xaw/Command.h>
  19. #include <X11/Xaw/Form.h>
  20. #include <X11/Xaw/Label.h>
  21.  
  22. typedef struct {
  23.            String name; /* Farbname */
  24.            XColor farbe;
  25.                } FARBEN;
  26.  
  27. /* functions in color.c:
  28.  *
  29.  * void Color();
  30.  * void create_pal1();
  31.  * void create_pal2();
  32.  * void CopyColor();
  33.  * void PasteColor();
  34.  * void ChangePal();
  35.  * void ColorOk();
  36.  * void ColorCancel();
  37.  * void init_color();
  38.  * void def_color_pal();
  39.  * void grey_color_pal();
  40.  * void green_color_pal();
  41.  * void change_color();
  42.  *
  43.  */
  44.  
  45.  
  46. /* externe Variablen */
  47.  
  48. extern Display *display;
  49. extern int screen;
  50.  
  51.  
  52. /* globale Variablen */
  53.  
  54. FARBEN defcolor[NOC];
  55.  
  56. XColor greycolor[NOC],
  57.        greencolor[NOC],
  58.        setcolor[NOC],
  59.        owncolor[NOC],
  60.        helpcolor[NOC];  /* Zwischenspeicher fuer Farbwerte */
  61.  
  62. Colormap cmap;
  63.  
  64. char *col_pal_name,     /* aktueller Palettenname */
  65.      *help_pal_name;    /* Zwischenspeicher fuer Palettenname */
  66.  
  67. Pixel pixel;
  68.  
  69. Widget b[NOC], c[NOC];
  70.  
  71. Pixel white;
  72.  
  73. /*************************************************************************/
  74. /* Function Name: Color
  75.  * Description:  Callback-Funktion, wenn Button 'Color' im Hauptmenue
  76.  *               gedrueckt wird. Neues Popup-Fenster erscheint mit
  77.  *               2 Farbpaletten (create_pal1/2) und 5 Command-Widgets
  78.  *               (def, grey, green, o.k., cancel)
  79.  * Globals: col_pal_name  - aktueller Palettenname
  80.  *          help_pal_name - Zwischenspeicher fuer Palettenname
  81.  */
  82.  
  83. /*ARGSUSED*/
  84. void Color(w, client_data, call_data)
  85. Widget w;
  86. XtPointer client_data, call_data; 
  87. {
  88.   void create_pal1();
  89.   void create_pal2();
  90.   void ChangePal();
  91.   void ColorOk();
  92.   void ColorCancel();
  93.  
  94.   Widget popup, form, label1, box1, label2, box2, button;
  95.   int b;
  96.  
  97.   popup = XtVaCreatePopupShell("Colortable",
  98.                   topLevelShellWidgetClass,
  99.                               w,
  100.                   NULL);
  101.  
  102.   form = XtCreateManagedWidget(
  103.          "form", formWidgetClass, popup,
  104.          NULL, ZERO);
  105.  
  106.   label1 = XtCreateManagedWidget(
  107.          "label1", labelWidgetClass, form, NULL, ZERO);
  108.  
  109.   box1 = XtCreateManagedWidget(
  110.          "box1", boxWidgetClass, form, NULL, ZERO);
  111.  
  112.   create_pal1(box1);
  113.  
  114.   label2 = XtCreateManagedWidget(
  115.          "label2", labelWidgetClass, form, NULL, ZERO);
  116.  
  117.   box2 = XtCreateManagedWidget(
  118.          "box2", boxWidgetClass, form, NULL, ZERO);
  119.  
  120.   create_pal2(box2);
  121.  
  122. b= 0;
  123.   button = XtCreateManagedWidget(
  124.          "color_def", commandWidgetClass, form, NULL, ZERO);
  125.   XtAddCallback(button, XtNcallback, ChangePal, (int *)(b));
  126. b++;
  127.   button = XtCreateManagedWidget(
  128.          "color_grey", commandWidgetClass, form, NULL, ZERO);
  129.   XtAddCallback(button, XtNcallback, ChangePal, (int *)(b));
  130. b++;
  131.   button = XtCreateManagedWidget(
  132.          "color_green", commandWidgetClass, form, NULL, ZERO);
  133.   XtAddCallback(button, XtNcallback, ChangePal, (int *)(b));
  134.  
  135.  
  136.   button = XtCreateManagedWidget(
  137.          "color_ok", commandWidgetClass, form, NULL, ZERO);
  138.   XtAddCallback(button, XtNcallback, ColorOk, NULL);
  139.  
  140.   button = XtCreateManagedWidget(
  141.           "color_cancel", commandWidgetClass, form, NULL, ZERO);
  142.   XtAddCallback(button, XtNcallback, ColorCancel, NULL);
  143.  
  144.  
  145.   help_pal_name = (char *)malloc(10 * sizeof(char));
  146.   if (help_pal_name == NULL)
  147.   {
  148.     fprintf(stderr, "Kein Speicher mehr frei!\n");
  149.     fprintf(stderr, "malloc-Aufruf in Color\n");
  150.     exit(1);
  151.   }
  152.   sprintf(help_pal_name, col_pal_name);
  153.  
  154.  
  155.   XtSetSensitive(w, FALSE);
  156.   XtPopup(popup, XtGrabNonexclusive);
  157. }
  158.  
  159. /*************************************************************************/
  160. /* Function Name: create_pal1
  161.  * Description: Command-Widgets fuer die obere Palette werden angelegt,
  162.  *              Hintergrundfarbe wird aus setcolor uebernommen 
  163.  * Arguments: parent        - parent-Widget fuer die b[NOC]'s
  164.  * Globals:   b[NOC]        - Widgets, die die Palette bilden
  165.  *            setcolor[NOC] - Farben fuer die Palette
  166.  */
  167.  
  168. void create_pal1(parent)
  169. Widget parent;
  170. {
  171.   void CopyColor();
  172.  
  173.   char *name;
  174.   int i;
  175.  
  176.   name = (char *)malloc(3*sizeof(char));
  177.   if (name == NULL)
  178.   {
  179.     fprintf(stderr,"Kein Speicher mehr frei\n");
  180.     fprintf(stderr,"malloc in create_pal1\n");
  181.   }
  182.  
  183.   for (i=0; i<NOC; i++)
  184.   {
  185.     sprintf(name, "b%d", i);
  186.  
  187.     b[i] = XtVaCreateManagedWidget(
  188.            name, commandWidgetClass, parent, 
  189.            XtNbackground, setcolor[i].pixel, NULL);
  190.     XtAddCallback(b[i], XtNcallback, CopyColor, NULL);
  191.   }
  192.  
  193.   free(name);
  194. }
  195.  
  196. /*************************************************************************/
  197. /* Function Name: create_pal2
  198.  * Description: Command-Widgets fuer die untere Palette werden angelegt,
  199.  *              Hintergrundfarbe wird aus owncolor uebernommen 
  200.  * Arguments: parent        - parent-Widget fuer die c[NOC]'s
  201.  * Globals:   c[NOC]        - Widgets, die die Palette bilden
  202.  *            owncolor[NOC] - Farben fuer die Palette
  203.  */
  204.  
  205. void create_pal2(parent)
  206. Widget parent;
  207. {
  208.   void PasteColor();
  209.  
  210.   char *name;
  211.   int i;
  212.  
  213.   name = (char *)malloc(3*sizeof(char));
  214.   if (name == NULL)
  215.   {
  216.     fprintf(stderr,"Kein Speicher mehr frei\n");
  217.     fprintf(stderr,"malloc in create_pal1\n");
  218.   }
  219.  
  220.   for (i=0; i<NOC; i++)
  221.   {
  222.     sprintf(name, "c%d", i);
  223.  
  224.     c[i] = XtVaCreateManagedWidget(
  225.            name, commandWidgetClass, parent,
  226.            XtNbackground, owncolor[i].pixel, NULL); 
  227.     XtAddCallback(c[i], XtNcallback, PasteColor, (int *)(i));
  228.   }
  229.  
  230.   free(name);
  231. }
  232.  
  233. /*************************************************************************/
  234. /* Function Name: CopyColor
  235.  * Description: Hintergrundfarbe von Widget w wird in der globalen 
  236.  *              Variable pixel gespeichert
  237.  * Arguments: w - Widget, das den Callback ausgeloest hat
  238.  * Globals: pixel
  239.  */
  240.  
  241. /*ARGSUSED*/
  242. void CopyColor(w, client_data, call_data)
  243. Widget w;
  244. XtPointer client_data, call_data;
  245. {
  246.   XtVaGetValues(w, XtNbackground, &pixel, NULL);
  247. }
  248.  
  249. /*************************************************************************/
  250. /* Function Name: PasteColor
  251.  * Description: Widget w erhaelt Hintergrundfarbe, die in globaler Variable
  252.  *              pixel gespeichert ist. Farbwert wird in Zwischenspeicher
  253.  *              helpcolor gespeichert (bis ColorOk oder ColorCancel    
  254.  *              aufgerufen wird).
  255.  * Arguments: w - Widget, das Callback ausgeloest hat
  256.  *            i - Nummer des Widget w
  257.  * Globals: pixel
  258.  *          helpcolor
  259.  *          display, cmap
  260.  */
  261.  
  262. /*ARGSUSED*/
  263. void PasteColor(w, client_data, call_data)
  264. Widget w;
  265. XtPointer client_data, call_data;
  266. {
  267.   int i = (int)client_data;
  268.  
  269.   /* Farbe in Widget kopieren */
  270.   XtVaSetValues(w, XtNbackground, pixel, NULL);
  271.  
  272.   /* Farbe in helpcolor kopieren */
  273.   helpcolor[i].pixel = pixel;
  274.   XQueryColor(display, cmap, &helpcolor[i]);
  275. }
  276.  
  277. /*************************************************************************/
  278. /* Function Name: ChangePal
  279.  * Description: In Abhaengigkeit des gedrueckten Buttons button werden
  280.  *              die Hintergrundfarben der beiden Farbpaletten geaendert.
  281.  *              In help_pal_name wird der zugehoerige Palettenname
  282.  *              zwischengespeichert (bis ColorOk oder ColorCancel auf- 
  283.  *              gerufen wird)
  284.  * Arguments: button - 0: Def-Widget hat Callback ausgeloest
  285.  *                     1: Grey-Widget  "    "         "
  286.  *                     2: Green-Widget "    "         "
  287.  * Globals: defcolor
  288.  *          greycolor
  289.  *          greencolor
  290.  *          helpcolor
  291.  *          help_pal_name
  292.  *          b[NOC], c[NOC]
  293.  */
  294.  
  295. /*ARGSUSED*/
  296. void ChangePal(w, client_data, call_data)
  297. Widget w;
  298. XtPointer client_data, call_data; 
  299. {
  300.   int button = (int)(client_data);
  301.   int i;
  302.  
  303.   switch(button)
  304.   {
  305.   case 0: /* def-Werte */
  306.       for (i=0; i<NOC; i++)
  307.       {
  308.         XtVaSetValues(b[i], XtNbackground, defcolor[i].farbe.pixel, NULL);
  309.         XtVaSetValues(c[i], XtNbackground, defcolor[i].farbe.pixel, NULL);
  310.         helpcolor[i] = defcolor[i].farbe;
  311.       }  
  312.       sprintf(help_pal_name, "def_pal");
  313.       break;
  314.  
  315.   case 1: /* grey-Werte */
  316.       for (i=0; i<NOC; i++)
  317.       {
  318.         XtVaSetValues(b[i], XtNbackground, greycolor[i].pixel, NULL);
  319.         XtVaSetValues(c[i], XtNbackground, greycolor[i].pixel, NULL);
  320.         helpcolor[i] = greycolor[i];
  321.       }
  322.       sprintf(help_pal_name, "grey_pal");
  323.       break;
  324.  
  325.   case 2: /* green */
  326.       for (i=0; i<NOC; i++)
  327.       {
  328.         XtVaSetValues(b[i], XtNbackground, greencolor[i].pixel, NULL);
  329.         XtVaSetValues(c[i], XtNbackground, greencolor[i].pixel, NULL);
  330.         helpcolor[i] = greencolor[i];
  331.       }
  332.       sprintf(help_pal_name, "green_pal");
  333.       break;
  334.  
  335.   } /* end of switch */
  336.  
  337. }
  338.  
  339. /*************************************************************************/
  340. /* Function Name: ColorOk
  341.  * Description: setcolor und owncolor bekommen die aktuellen Farbwerte
  342.  *              zugewiesen. Falls Farbreihenfolge durch Copy und Paste
  343.  *              geaendert wurde, wird Farbe fuer owncolor von helpcolor
  344.  *              uebernommen. col_pal_name erhaelt den aktuellen Namen
  345.  *              und das Popup-Widget wird geschlossen
  346.  * Arguments: w - Widget, das den Callback ausgeloest hat
  347.  * Globals: help_pal_name, col_pal_name
  348.  *          setcolor, owncolor
  349.  *          defcolor, greycolor, greencolor
  350.  */
  351.  
  352. /*ARGSUSED*/
  353. void ColorOk(w, client_data, call_data)
  354. Widget    w;        
  355. XtPointer client_data, call_data;
  356. {
  357.   Widget popup = XtParent(XtParent(w));
  358.   Widget button = XtParent(popup);
  359.   int i;
  360.  
  361.   if (strcmp(help_pal_name, "def_pal") == 0)
  362.   {
  363.     for (i=0; i<NOC; i++)
  364.     {
  365.       setcolor[i]  = defcolor[i].farbe;
  366.       owncolor[i]  = helpcolor[i];
  367.       helpcolor[i] = defcolor[i].farbe;
  368.     }
  369.   }
  370.  
  371.   if (strcmp(help_pal_name, "grey_pal") == 0)
  372.   {
  373.     for (i=0; i<NOC; i++)
  374.     {
  375.       setcolor[i]  = greycolor[i];
  376.       owncolor[i]  = helpcolor[i];
  377.       helpcolor[i] = greycolor[i];
  378.     }  
  379.   }
  380.  
  381.   if (strcmp(help_pal_name, "green_pal") == 0)
  382.   {
  383.     for (i=0; i<NOC; i++)
  384.     {
  385.       setcolor[i]  = greencolor[i];
  386.       owncolor[i]  = helpcolor[i];
  387.       helpcolor[i] = greencolor[i];
  388.     }  
  389.   }
  390.  
  391.   /* Palettenname aus Hilfsspeicher wird uebernommen */
  392.   sprintf(col_pal_name, help_pal_name);
  393.   free(help_pal_name);
  394.  
  395.   XtSetSensitive(button, TRUE);
  396.   XtDestroyWidget(popup);
  397. }
  398.  
  399. /*************************************************************************/
  400. /* Function Name: ColorCancel
  401.  * Description: helpcolor wird wieder auf alte Farbwerte gesestzt und 
  402.  *              das Popup-Widget wird geschlossen. Zwischengespeicherte
  403.  *              Aenderungen (ChangePal, Copy, Paste) werden geloescht.
  404.  * Arguments: w - Widget, das den Callback ausgeloest hat
  405.  * Globals: col_pal_name, help_pal_name
  406.  *          defcolor, greycolor, greencolor
  407.  *          helpcolor
  408.  */
  409.  
  410. /*ARGSUSED*/
  411. void ColorCancel(w, client_data, call_data)
  412. Widget    w;        
  413. XtPointer client_data, call_data;
  414. {
  415.   Widget popup = XtParent(XtParent(w));
  416.   Widget button = XtParent(popup);
  417.   int i;
  418.  
  419.  
  420.   if (strcmp(col_pal_name, "def_pal") == 0)
  421.   {
  422.     for (i=0; i<NOC; i++)
  423.     {
  424.       helpcolor[i] = defcolor[i].farbe;
  425.     }  
  426.   }
  427.  
  428.   if (strcmp(col_pal_name, "grey_pal") == 0)
  429.   {
  430.     for (i=0; i<NOC; i++)
  431.     {
  432.        helpcolor[i] = greycolor[i];
  433.     }  
  434.   }
  435.  
  436.   if (strcmp(col_pal_name, "green_pal") == 0)
  437.   {
  438.     for (i=0; i<NOC; i++)
  439.     {
  440.       helpcolor[i] = greencolor[i];
  441.     }  
  442.   }
  443.  
  444.   free(help_pal_name);
  445.  
  446.   XtSetSensitive(button, TRUE);
  447.   XtDestroyWidget(popup);
  448. }
  449.  
  450. /*************************************************************************/
  451. /* Function Name: init_color
  452.  * Description: Initialiserungsprozess fuer Farbanwendung :
  453.  *              Anlegen der Colormap, Allokation der Farben,
  454.  *              col_pal_name wird mit def_pal initialisiert
  455.  * Globals: display, screen,
  456.  *          cmap, white,
  457.  *          defcolor, greycolor, greencolor, 
  458.  *          setcolor, owncolor, helpcolor,
  459.  *          col_pal_name
  460.  */
  461.  
  462. void init_color()
  463. {
  464.   void def_color_pal();
  465.   void grey_color_pal();
  466.   void green_color_pal();
  467.  
  468.   XColor exact;
  469.   int i;
  470.  
  471.   cmap = DefaultColormap(display, screen);
  472.  
  473.   white = WhitePixel(display, screen);
  474.  
  475.   def_color_pal();
  476.   grey_color_pal();
  477.   green_color_pal();
  478.  
  479.   for (i=0; i<NOC; i++)
  480.   {
  481.     XAllocNamedColor(display,cmap,
  482.           defcolor[i].name, &exact, &(defcolor[i].farbe));
  483.  
  484.     XAllocColor(display,cmap, &greycolor[i]);
  485.  
  486.     XAllocColor(display,cmap, &greencolor[i]);
  487.  
  488.     setcolor[i] = defcolor[i].farbe;
  489.     owncolor[i] = defcolor[i].farbe;
  490.     helpcolor[i] = defcolor[i].farbe;
  491.   }
  492.  
  493.   col_pal_name = (char *)malloc(10 * sizeof(char));
  494.   if (col_pal_name == NULL)
  495.   {
  496.     fprintf(stderr, "Kein Speicher mehr frei!\n");
  497.     fprintf(stderr, "malloc-Aufruf in init_color\n");
  498.     exit(1);
  499.   }
  500.   sprintf(col_pal_name,"def_pal");
  501.  
  502. }
  503.  
  504. /*************************************************************************/
  505. /* Function Name: def_color_pal
  506.  * Description: Farbnamen fuer defcolor werden angegeben
  507.  * Globals: def_color
  508.  */
  509.  
  510. void def_color_pal()
  511. {
  512.   XColor black,
  513.      blue,
  514.      cadetBlue,
  515.      coral,
  516.       darkGreen,
  517.       darkOrange,
  518.      darkViolet,
  519.      deepPink,
  520.      forest,
  521.      green,
  522.      grey,
  523.      hotPink,
  524.      lightGrey,
  525.      lime,
  526.      maroon,
  527.      mediumBlue,
  528.      mediumOrchid,
  529.      mistyRose,
  530.      olive,
  531.      orange,
  532.      peru,
  533.      plum,
  534.      red,
  535.      saddle,
  536.      sienna,
  537.      slateBlue,
  538.      slateGrey,
  539.      snow,
  540.      steelBlue,
  541.      tomato,
  542.      violetRed,
  543.      yellow ;
  544.  
  545.   defcolor[0].farbe = black;        defcolor[0].name = "black";
  546.   defcolor[1].farbe = saddle;        defcolor[1].name = "SaddleBrown";
  547.   defcolor[2].farbe = sienna;        defcolor[2].name = "Sienna";
  548.   defcolor[3].farbe = peru;        defcolor[3].name = "Peru";
  549.   defcolor[4].farbe = olive;        defcolor[4].name = "OliveDrab";
  550.   defcolor[5].farbe = darkGreen;    defcolor[5].name = "DarkGreen";
  551.   defcolor[6].farbe = forest;        defcolor[6].name = "ForestGreen";
  552.   defcolor[7].farbe = lime;        defcolor[7].name = "LimeGreen";
  553.   defcolor[8].farbe = green;        defcolor[8].name = "Green";
  554.   defcolor[9].farbe = yellow;        defcolor[9].name = "Yellow";
  555.   defcolor[10].farbe = orange;        defcolor[10].name = "Orange";
  556.   defcolor[11].farbe = darkOrange;      defcolor[11].name = "DarkOrange";
  557.   defcolor[12].farbe = coral;        defcolor[12].name = "LightCoral";
  558.   defcolor[13].farbe = tomato;        defcolor[13].name = "Tomato";
  559.   defcolor[14].farbe = red;        defcolor[14].name = "Red";
  560.   defcolor[15].farbe = maroon;        defcolor[15].name = "Maroon";
  561.   defcolor[16].farbe = violetRed;       defcolor[16].name = "VioletRed";
  562.   defcolor[17].farbe = deepPink;        defcolor[17].name = "DeepPink";
  563.   defcolor[18].farbe = hotPink;        defcolor[18].name = "HotPink";
  564.   defcolor[19].farbe = plum;        defcolor[19].name = "Plum";
  565.   defcolor[20].farbe = mediumOrchid;     defcolor[20].name = "MediumOrchid";
  566.   defcolor[21].farbe = darkViolet;      defcolor[21].name = "DarkViolet";
  567.   defcolor[22].farbe = slateBlue;       defcolor[22].name = "SlateBlue";
  568.   defcolor[23].farbe = mediumBlue;      defcolor[23].name = "MediumBlue";
  569.   defcolor[24].farbe = blue;        defcolor[24].name = "Blue";
  570.   defcolor[25].farbe = steelBlue;       defcolor[25].name = "SteelBlue";
  571.   defcolor[26].farbe = cadetBlue;       defcolor[26].name = "CadetBlue";
  572.   defcolor[27].farbe = slateGrey;       defcolor[27].name = "SlateGrey";
  573.   defcolor[28].farbe = grey;        defcolor[28].name = "Grey";
  574.   defcolor[29].farbe = lightGrey;       defcolor[29].name = "LightGrey";
  575.   defcolor[30].farbe = snow;        defcolor[30].name = "Snow2";
  576.   defcolor[31].farbe = mistyRose;       defcolor[31].name = "MistyRose";
  577.  
  578. }
  579.  
  580. /*************************************************************************/
  581. /* Function Name: grey_color
  582.  * Description: Farbwerte fuer greycolor werden berechnet
  583.  * Globals: greycolor
  584.  */
  585.  
  586. void grey_color_pal()
  587. {
  588.   int i,
  589.       k;
  590.  
  591.   for (i=0; i<NOC; i++)
  592.   {
  593.     k = i * (65536 / NOC);
  594.     greycolor[i].red = k;
  595.     greycolor[i].green = k;
  596.     greycolor[i].blue = k;
  597.   }
  598. }
  599.  
  600. /*************************************************************************/
  601. /* Function Name: green_color
  602.  * Description: Farbwerte fuer greencolor werden berechnet
  603.  * Globals: green_color
  604.  */
  605.  
  606. void green_color_pal()
  607. {
  608.   int i, k;
  609.   int max = 65535;
  610.  
  611.   for (i=0; i<NOC; i++)
  612.   {
  613.     if (i<10)
  614.     {
  615.       k = max / 100;
  616.       greencolor[i].red   = k * (50 - 3*i);
  617.       greencolor[i].green = k * (25 + 2*i);
  618.       greencolor[i].blue  = k / 20 * i;
  619.     }
  620.     else
  621.     {
  622.       if (i<20)
  623.       {
  624.         k = 60 - (2 * i);
  625.         greencolor[i].red   = k;
  626.         greencolor[i].green = max * 10 / (29 - i);
  627.         greencolor[i].blue  = k;
  628.       }
  629.       else
  630.       {
  631.         k = i * (max /NOC);
  632.         greencolor[i].red   = k;
  633.         greencolor[i].green = max;
  634.         greencolor[i].blue  = 0;
  635.       }
  636.     }
  637.   }
  638. }
  639.  
  640. /*************************************************************************/
  641. /* Function Name: change_color
  642.  * Description: Paletten werden gemaess dem neuen Namen pal_name geaendert
  643.  * Arguments: pal_name - neuer Palettenname 
  644.  * Globals:  setcolor, owncolor, helpcolor
  645.  *           defcolor, greycolor, greencolor
  646.  *           display, cmap
  647.  *           col_pal_name, help_pal_name
  648.  */
  649. void change_color(pal_name, farben)
  650. char *pal_name;
  651. XColor farben[NOC];
  652. {
  653.   int i;
  654.  
  655.   if (strcmp(pal_name, "def_pal") == 0)
  656.   {
  657.     for (i=0; i<NOC; i++)
  658.     {
  659.       setcolor[i]  = defcolor[i].farbe;
  660.       owncolor[i]  = farben[i];
  661.       helpcolor[i] = farben[i];
  662.       XAllocColor(display, cmap, &setcolor[i]);
  663.       XAllocColor(display, cmap, &owncolor[i]);
  664.       XAllocColor(display, cmap, &helpcolor[i]);
  665.     }  
  666.   }
  667.  
  668.   if (strcmp(pal_name, "grey_pal") == 0)
  669.   {
  670.     for (i=0; i<NOC; i++)
  671.     {
  672.       setcolor[i]  = greycolor[i];
  673.       owncolor[i]  = farben[i];
  674.       helpcolor[i] = farben[i];
  675.       XAllocColor(display, cmap, &setcolor[i]);
  676.       XAllocColor(display, cmap, &owncolor[i]);
  677.       XAllocColor(display, cmap, &helpcolor[i]);
  678.     }  
  679.   }
  680.  
  681.   if (strcmp(pal_name, "green_pal") == 0)
  682.   {
  683.     for (i=0; i<NOC; i++)
  684.     {
  685.       setcolor[i]  = greencolor[i];
  686.       owncolor[i]  = farben[i];
  687.       helpcolor[i] = farben[i];
  688.       XAllocColor(display, cmap, &setcolor[i]);
  689.       XAllocColor(display, cmap, &owncolor[i]);
  690.       XAllocColor(display, cmap, &helpcolor[i]);
  691.     }  
  692.   }
  693.  
  694.   sprintf(col_pal_name, pal_name);
  695. }
  696.  
  697. /*************************************************************************/
  698. /*************************************************************************/
  699. /*************************************************************************/
  700. /* Function Name: 
  701.  * Description: 
  702.  * Arguments: 
  703.  * Globals: 
  704.  * Returns: 
  705.  */
  706. /*************************************************************************/
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.